"""
common文件夹: 专门放工具代码的
assert_tool: 专门用于断言的工具文件
"""
import jsonschema


def common_assert(resp, status_code, success, code, message):
    assert status_code == resp.status_code
    assert success is resp.json().get("success")  # Python里判断布尔类型相等, 建议用is
    assert code == resp.json().get("code")
    assert message in resp.json().get("message")


def common_jsonschema(resp, status_code, success, code, message, data_type):
    # 可以使用JsonSchema实现, 针对JSON数据进行断言. 响应状态码可以用assert的
    # 下面的代码, 可以封装成一个工具函数
    assert status_code == resp.status_code

    schema = {
        "type": "object",
        "required": ["success", "code", "message", "data"],
        "properties": {
            "success": {"const": success},
            "code": {"const": code},
            "message": {"pattern": f"{message}"},
            "data": {"type": data_type}
        }
    }

    jsonschema.validate(resp.json(), schema)
